@时光机
2年前 提问
1个回答
什么是DOP攻击
Ann
2年前
DOP是一种针对数据流的非控制数据攻击方式,核心思想是用各种各样的内存行为来模拟相应操作,这种攻击类似于传统的ROP以返回地址为目标的攻击,但ROP攻击只能用来实现信息泄露或者是提权,其本身不能实现复杂的操作。DOP证明了非控制数据攻击本身就能实现图灵完备的攻击。DOP攻击虽然显示出了其潜在的危害性,但目前对针对数据流的攻击还知之甚少,长久以来该攻击手段可实现的攻击目标一直被认为是有限的。
类似于ROP,DOP攻击有以下两点不同:
DOP的gadgets只能使用内存来传递操作的结果,而ROP的gadgets可以使用寄存器。
DOP的gadgets必须符合控制流图(CFG),不能发生非法的控制流转移,而且无需一个接一个的执行。而ROP的gadgets必须成链,顺序执行。
DOP攻击构造步骤如下:
从目标程序中定位发生内存错误的函数,然后寻找包含该函数的调度器,收集用于攻击的gadgets。
以预期的恶意MINDOP操作作为模板,每个MINDOP操作可以通过相应的功能类别的任何gadgets来实现。可以根据优先级来进行选择。
一旦我们得到了实现所需的功能的gadgets,接下来要做的就是验证每个拼接。构造输入到程序,触发内存错误,激活gadgets。如果攻击不成功,我们回滚到步骤2,选择不同的gadgets,并尝试再次拼接。